import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router'
const service = axios.create({
  // 处理axios区分生产开发环境问题
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 50000
})
// 请求拦截器
service.interceptors.request.use((config) => {
  const token = store.getters.token
  if (token) {
    config.headers.Authorization = 'Bearer ' + token
  }
  return config
}, (errors) => {
  return Promise.reject(errors)
})
// 响应拦截器
service.interceptors.response.use(
  (response) => {
    // axios默认包裹了data
    // 判断是不是Blob
    if (response.data instanceof Blob) return response.data // 返回了Blob对象
    const { data, message, success } = response.data
    if (success) {
      return data
    } else {
      Message({ type: 'error', message: message })
      return Promise.reject(new Error(message))
    }
  },
  async(error) => {
    if (error.response.status === 401) {
      await store.dispatch('user/logout') // 清除token用户信息
      router.push('/login') // 跳转到用户界面
      Message({ type: 'error', message: '登录失效请重新登录' })
      return Promise.reject(error)
    }
    Message({ type: 'error', message: error.message })
    return Promise.reject(error)
  }
)
export default service
